package com.gwcloud.leetcode.interview100;

import java.util.HashMap;
import java.util.Map;

/** 
* @ClassName   : Leetcode0166 
* @author      : ganwei 
* @date        : 2020年5月28日 
* @Description : 166. 分数到小数 
*/
public class Leetcode0166 {
    /**
     * -解题思路，
     */
	public String fractionToDecimal(int numerator, int denominator) {
		if(numerator == 0){
			return "0";
		}
		StringBuilder fraction = new StringBuilder();
		
		if(numerator < 0 ^ denominator < 0){
			fraction.append("-");
		}
		
	    long dividend = Math.abs(Long.valueOf(numerator));
	    long divisor = Math.abs(Long.valueOf(denominator));
	    fraction.append(String.valueOf(dividend / divisor));
	    long remainder = dividend % divisor;
	    if (remainder == 0) {
	        return fraction.toString();
	    }
	    fraction.append(".");
	    Map<Long, Integer> map = new HashMap<>();
	    while (remainder != 0) {
	        if (map.containsKey(remainder)) {
	            fraction.insert(map.get(remainder), "(");
	            fraction.append(")");
	            break;
	        }
	        map.put(remainder, fraction.length());
	        remainder *= 10;
	        fraction.append(String.valueOf(remainder / divisor));
	        remainder %= divisor;
	    }
	    return fraction.toString();

    }
    /**
     * -主函数
     */
    public static void main(String[] args) {

    }
}
